package com.hhkj.sms.common.client;

import cn.hutool.core.util.StrUtil;
import com.aliyun.dysmsapi20170525.Client;
import com.hhkj.sms.common.conf.AliDaYuConf;

/**
 * AliDaYuClient
 *
 * @author HHKJ-SERVER-ZJ
 * @since 2023/10/24 14:47
 */
public class AliDaYuClient {

    private static Client instance;

    public static synchronized Client getInstance() {
        if (instance == null) {
            if (StrUtil.isBlank(AliDaYuConf.accessKeyId) ||
                    StrUtil.isBlank(AliDaYuConf.accessKeySecret) ||
                    StrUtil.isBlank(AliDaYuConf.configEndpoint)) {
                throw new RuntimeException("短信功能未配置，无法使用");
            }
            // 阿里云账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维，请登录RAM控制台创建RAM用户
            // 此处以把AccessKey 和 AccessKeySecret 保存在环境变量为例说明。您也可以根据业务需要，保存到配置文件里
            // 强烈建议不要把 AccessKey 和 AccessKeySecret 保存到代码里，会存在密钥泄漏风险
            com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                    .setAccessKeyId(AliDaYuConf.accessKeyId)
                    .setAccessKeySecret(AliDaYuConf.accessKeySecret);
            // 访问的域名
            config.endpoint = AliDaYuConf.configEndpoint;
            try {
                instance = new Client(config);
            } catch (Exception e) {
                throw new RuntimeException("阿里大鱼短信发送客户端创建失败！");
            }
        }
        return instance;
    }
}
